# 带着二哈去旅行丶:ZZQ
# 生成时间：2021/12/5 下午3:08

# 创建图表前先打印出骰子结果
from die import Die
from plotly.graph_objs import Bar, Layout
from plotly import offline

# 创建一个D6
# 15.4.6 同时掷两个骰子
# 创建两个D6
# die = Die()
die_1 = Die()
die_2 = Die()


# 掷几次骰子并将结果存储在一个列表中
results = []
# 15.4.4 分析结果
for roll_num in range(1000):  # 100次
    # result = die.roll()
    result = die_1.roll() + die_2.roll()
    results.append(result)

# 分析结果
frequencies = []  # 统计每种点数出现频率
max_result = die_1.num_sides + die_2.num_sides
# for value in range(1, die.num_sides + 1):  # 从1到6
for value in range(2, max_result+1):        # 从2到12
    frequency = results.count(value)  # 遍历可能的点数，计算点数出现次数，并添加到frequencies末尾
    frequencies.append(frequency)

# print(results)
# print(frequencies)

# 15.4.5 绘制直方图
# x_values = list(range(1, die.num_sides + 1))  # 存储可能出现的点数列表 Plotly不能直接接受range结果需要类表形式
# 可视化结果
x_values = list(range(2, max_result+1))
data = [Bar(x=x_values, y=frequencies)]  # Bar用于绘制条形统计图的数据集，存储x值类表和y值列表 可能含有多个元素 放入方括号内

# x_axis_config = {'title': '结果'}  # 坐标轴标签 字典形式
x_axis_config = {'title':'结果', 'dtick':1}   # dtick键：设置指定了x轴显示的刻度间距
y_axis_config = {'title': '结果的频率'}
# my_layout = Layout(title='掷一个D6 1000次的结果', xaxis=x_axis_config, yaxis=y_axis_config)
# layout()返回一个 指定图表布局和配置对象    设置图表名称并传入x轴和y轴的配置字典
my_layout = Layout(title='掷两个D6 1000次的结果', xaxis=x_axis_config, yaxis=y_axis_config)
# offline.plot({'data': data, 'layout': my_layout}, filename='d6.html')
# offline.plot()含函数用于生成图表 包含一个数据和布局对象的字典，还接受一个文件名指定将图表保存到哪里
offline.plot({'data':data, 'layout':my_layout}, filename='d6_d6.html')
